#!/usr/bin/python3
 
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
    #返回2个参数的和."
    total = arg1 + arg2 # total在这里是局部变量.
    print ("函数内是局部变量 : ", total)
    return total
 
#调用sum函数
sum( 10, 20 )
print ("函数外是全局变量 : ", total)

# global 和 nonlocal关键字
# 当内部作用域想修改外部作用域的变量时，就要用到 global 和 nonlocal 关键字了。
num = 1
def fun1():
    global num  # 需要使用 global 关键字声明，全局变量
    print(num) 
    num = 123
    print(num)
fun1()
print(num)
# 如果要修改嵌套作用域（enclosing 作用域，外层非全局作用域）中的变量则需要 nonlocal 关键字了
def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal关键字声明，局部变量
        num = 100
        print(num)
    inner()
    print(num)
outer()

a = 10
def test():
    global a # 未加此句报错，因为错误信息为局部作用域引用错误，因为 test 函数中的 a 使用的是局部，未定义，无法修改
    a = a + 1
    print(a)
test()
# 或者
a = 10
def test(a):
    a = a + 1
    print(a)
test(a)